VideoHelp Forum



Support our site by donate $5 directly to us Thanks!!!

Try StreamFab Downloader and download streaming video from Netflix, Amazon!



+ Reply to Thread
Page 7 of 26
FirstFirst ... 5 6 7 8 9 17 ... LastLast
Results 181 to 210 of 769
  1. Originally Posted by LittleSoldier View Post

    1. Update your extension to the latest version
    2. Edit in python/after.py file.


    Code:
    # parse license challenge
    cdm.parse_license(session_id, licence)
    
    # get keys
    keys=""
    for key in cdm.get_keys(session_id):
        if key.type=="CONTENT":
            keys+=f"--key {key.kid.hex}:{key.key.hex()}\n"  # close session, disposes of session data
    cdm.close(session_id)
    keys
    Keys will be shown like :


    Thank you.

    Just a note, if you commenting out the old line (8) and adding new one
    do not use TAB, only spaces .....

    Using TAB will make it not working ....(At least on Windows 11/Chrome)

    #REPLACE
    #########################
    #keys+=f"{key.kid.hex}:{key.key.hex()}\n"
    #########################

    #WITH
    #########################
    keys+=f"--key {key.kid.hex}:{key.key.hex()}\n"
    #########################
    If I was in politics I make sure you drink plenty of beer
    and watch plenty of TV to keep you busy. | Data is the new oil.
    Quote Quote  
  2. Good morning,

    here is how to display the license URL in the text. in the code r.url.includes the name of the license that you use most often me https:\\widevine...etc license

    my code in popup.js file :
    Code:
    ....etc
    drawList(requests.map(r => r['url']),'requestSearch','requestList','license');
    	const filteredUrl = requests.reduce((acc, r) => {
        if(r.url.includes('cwip-shaka')) {
            acc.push(r.url);
    	}
        return acc;}, []);
        if(psshs.length==1){
            document.getElementById('pssh').value=psshs[0];
        }
    	if(filteredUrl.length>=1){
    		document.getElementById('license').value=filteredUrl[0];
    	}
        });
    Image
    [Attachment 78642 - Click to enlarge]


    the problem comes in the gauss function to get the key.
    Code:
    let vars=`pssh="${document.getElementById('pssh').value}"\n`
        vars+=`licUrl="${requests[userInputs['license']]['url']}"\n`
        vars+=`licHeaders='${requests[userInputs['license']]['headers'].replace(/\\/g, "\\\\")}'\n`
    I tried this but it doesn't work.
    Code:
    let vars=`pssh="${document.getElementById('pssh').value}"\n`
        vars+=`licUrl="${document.getElementById('license').value}"\n`
        vars+=`licHeaders='${requests[document.getElementById('license').value]['headers'].replace(/\\/g, "\\\\")}'\n`
    Quote Quote  
  3. Originally Posted by LittleSoldier View Post

    Thank you.

    Just a note, if you commenting out the old line (8) and adding new one
    do not use TAB, only spaces .....

    Using TAB will make it not working ....(At least on Windows 11/Chrome)

    #REPLACE
    #########################
    #keys+=f"{key.kid.hex}:{key.key.hex()}\n"
    #########################

    #WITH
    #########################
    keys+=f"--key {key.kid.hex}:{key.key.hex()}\n"
    #########################
    Thanks for Suggestion
    Quote Quote  
  4. you can also do this:

    1. Update your extension to the latest version
    2. Edit in python/after.py file.

    Code:
    # parse license challenge
    cdm.parse_license(session_id, licence)
    
    # get keys
    keys=""
    for key in cdm.get_keys(session_id, "CONTENT"):
      keys+=f"--key {key.kid.hex}:{key.key.hex()}\n"
    
    # close session, disposes of session data
    cdm.close(session_id)
    keys
    Image
    [Attachment 78648 - Click to enlarge]
    Quote Quote  
  5. Member
    Join Date
    Oct 2023
    Location
    Afghanistan
    Search PM
    Thanks for your effort and sharing this extension. Works well with Binge, where scripts don't play so well.
    Quote Quote  
  6. Hello everyone,

    I would like to know how to obtain the key to videos with links that are automatically displayed in the text with : https://bitmovin.com/demos/drm

    my code in popup.js file :
    Code:
    drawList(requests.map(r => r['url']),'requestSearch','requestList','license');
    	const filteredUrl = requests.reduce((acc, r) => {
        if(r.url.includes('cwip-shaka')) {
            acc.push(r.url);
    	}
        return acc;}, []);
        if(psshs.length==1){
            document.getElementById('pssh').value=psshs[0];
        }
    	if(filteredUrl.length>=1){
    		document.getElementById('license').value=filteredUrl[0];
    	}
        });
    }
    Code:
    async function guess(){
        let pyodide = await loadPyodide();
        await pyodide.loadPackage(["certifi-2024.2.2-py3-none-any.whl","charset_normalizer-3.3.2-py3-none-any.whl","construct-2.8.8-py2.py3-none-any.whl","idna-3.6-py3-none-any.whl","packaging-23.2-py3-none-any.whl","protobuf-4.24.4-cp312-cp312-emscripten_3_1_52_wasm32.whl","pycryptodome-3.20.0-cp35-abi3-emscripten_3_1_52_wasm32.whl","pymp4-1.4.0-py3-none-any.whl","pyodide_http-0.2.1-py3-none-any.whl","pywidevine-1.8.0-py3-none-any.whl","requests-2.31.0-py3-none-any.whl","urllib3-2.2.1-py3-none-any.whl"].map(e=>"wheels/"+e))
        let vars=`pssh="${document.getElementById('pssh').value}"\n`
    	if (document.getElementById('license').value.length==1){
    		vars+=`licUrl="${document.getElementById('license').value}"\n`
    		vars+=`licHeaders='${[document.getElementById('license').value]['headers'].replace(/\\/g, "\\\\")}'\n`
    	} else {
            vars+=`licUrl="${requests[userInputs['license']]['url']}"\n`
            vars+=`licHeaders='${requests[userInputs['license']]['headers'].replace(/\\/g, "\\\\")}'\n`
    	}
        let pre=await fetch('python/pre.py').then(res=>res.text())
        let after=await fetch('python/after.py').then(res=>res.text())
        let scheme=await fetch(`python/schemes/${document.getElementById("scheme").value}.py`).then(res=>res.text())
        let result = await pyodide.runPythonAsync([vars, pre, scheme, after].join("\n"));
        document.getElementById('result').value=result;
    }
    I'm stuck with this code to display the headers code:
    Code:
    vars+=`licHeaders='${[document.getElementById('license').value]['headers'].replace(/\\/g, "\\\\")}'\n`
    Do you have a solution to resolve this problem with automatic links?
    Quote Quote  
  7. I made a contribution to the pssh-box-wasm project, which was a great inspiration for the development of the new version of my extension, adding the ability to convert the CDM format.
    https://github.com/emarsden/pssh-box-wasm/pull/5

    If you need to convert CDM format between WVD <==> Blobs, consider using this tool.
    https://emarsden.github.io/pssh-box-wasm/convert/


    Happy open source!
    Don't be stupid.Use your brain and Google.
    Read the rules and documentation before asking for support about my extension.
    Quote Quote  
  8. Member
    Join Date
    Aug 2023
    Location
    Turkey
    Search Comp PM
    Originally Posted by FoxRefire View Post
    I made a contribution to the pssh-box-wasm project, which was a great inspiration for the development of the new version of my extension, adding the ability to convert the CDM format.
    https://github.com/emarsden/pssh-box-wasm/pull/5

    If you need to convert CDM format between WVD <==> Blobs, consider using this tool.
    https://emarsden.github.io/pssh-box-wasm/convert/


    Happy open source!

    thank you nice job ...

    Happy open source!
    Quote Quote  
  9. [Announcement]

    Extension updated.
    This includes:
    * Add Red Bee scheme (f8eb491)
    * Code refactoring (7a3df8a)
    * Auto-detect licenseURL and scheme (60e5e46)
    Don't be stupid.Use your brain and Google.
    Read the rules and documentation before asking for support about my extension.
    Quote Quote  
  10. Thanks a lot FoxRefire for automatic URL detection.

    Image
    [Attachment 78670 - Click to enlarge]
    Quote Quote  
  11. @sesamap159
    your screen from FF is fully different from chrome ext (this shot is from brave)

    Image
    [Attachment 78672 - Click to enlarge]


    or have you customized your guesser?
    also i've tried to add guesser ext into my waterfox (FF based) but can't add. issue to waterfox (work only with FF) or problem only by my side ?
    i've tried Install add-on from file, then load .zip file from extension panel, but i've this:

    Image
    [Attachment 78673 - Click to enlarge]


    also, someone confirm that mpd is still not shown in this latest rel ?
    Quote Quote  
  12. > i've tried to add guesser ext into my waterfox (FF based) but can't add. issue to waterfox (work only with FF) or problem only by my side ?
    i've tried Install add-on from file, then load .zip file from extension panel, but i've this:

    Just because you did wrong act, RTFM.
    https://github.com/FoxRefire/wvg/blob/next/README.md

    Edit:
    > also, someone confirm that mpd is still not shown in this latest rel ?
    I don't intend to implement features related to downloading or decrypting content, such as obtaining mpd links, in the future.
    This is because I do not want to put myself at legal risk by my extension.
    Don't be stupid.Use your brain and Google.
    Read the rules and documentation before asking for support about my extension.
    Quote Quote  
  13. Originally Posted by PepeForEver View Post
    I bet it doesn't work with Canal Plus, right?
    unfortunately i tried it with polish canal plus and no luck, even tho its widevine l3
    Quote Quote  
  14. Hello Foxfire,

    here is how to get error message if the key is not obtained.
    async function guess(){
    try {
    let pyodide = await loadPyodide();
    await pyodide.loadPackage(["certifi-2024.2.2-py3-none-any.whl","charset_normalizer-3.3.2-py3-none-any.whl","construct-2.8.8-py2.py3-none-any.whl","idna-3.6-py3-none-any.whl","packaging-23.2-py3-none-any.whl","protobuf-4.24.4-cp312-cp312-emscripten_3_1_52_wasm32.whl","pycryptodome-3.20.0-cp35-abi3-emscripten_3_1_52_wasm32.whl","pymp4-1.4.0-py3-none-any.whl","pyodide_http-0.2.1-py3-none-any.whl","pywidevine-1.8.0-py3-none-any.whl","requests-2.31.0-py3-none-any.whl","urllib3-2.2.1-py3-none-any.whl"].map(e=>"wheels/"+e))
    let vars=`pssh="${document.getElementById('pssh').valu e}"\n`
    vars+=`licUrl="${requests[userInputs['license']]['url']}"\n`
    vars+=`licHeaders='${requests[userInputs['license']]['headers'].replace(/\\/g, "\\\\")}'\n`
    vars+=`licBody="${requests[userInputs['license']]['body']}"\n`
    let pre=await fetch('python/pre.py').then(res=>res.text())
    let after=await fetch('python/after.py').then(res=>res.text())
    let scheme=await fetch(`python/schemes/${document.getElementById("scheme").value}.py`).th en(res=>res.text())
    let result = await pyodide.runPythonAsync([vars, pre, scheme, after].join("\n"));
    document.getElementById('result').value=result;
    document.getElementById('result').style.color ="blue";
    } catch (error) {
    document.getElementById('result').value="Oops, we didn't get the key!";
    document.getElementById('result').style.color ="red";
    }
    }
    Quote Quote  
  15. Member
    Join Date
    Aug 2023
    Location
    Turkey
    Search Comp PM
    anyone know how to fix example

    keys+=f"{key.kid.hex}:{key.key.hex()}\n"

    i have change to

    keys+=f" --key {key.kid.hex}:{key.key.hex()}"

    very perfeckt for me bud only what i mising its thad the keys not stored

    without \n

    anyone can help to resolve this ?
    Quote Quote  
  16. anyone know how to fix example

    keys+=f"{key.kid.hex}:{key.key.hex()}\n"

    i have change to

    keys+=f" --key {key.kid.hex}:{key.key.hex()}"

    very perfeckt for me bud only what i mising its thad the keys not stored

    without \n

    anyone can help to resolve this ?
    replace this code in python/after.py:
    Code:
    # parse license challenge
    cdm.parse_license(session_id, licence)
    
    # get keys
    keys=""
    for key in cdm.get_keys(session_id, "CONTENT"):
      keys+=f"--key {key.kid.hex}:{key.key.hex()}\n"
    
    # close session, disposes of session data
    cdm.close(session_id)
    keys
    Quote Quote  
  17. Member
    Join Date
    Aug 2023
    Location
    Turkey
    Search Comp PM
    Originally Posted by sesamap159 View Post
    anyone know how to fix example

    keys+=f"{key.kid.hex}:{key.key.hex()}\n"

    i have change to

    keys+=f" --key {key.kid.hex}:{key.key.hex()}"

    very perfeckt for me bud only what i mising its thad the keys not stored

    without \n

    anyone can help to resolve this ?
    replace this code in python/after.py:
    Code:
    # parse license challenge
    cdm.parse_license(session_id, licence)
    
    # get keys
    keys=""
    for key in cdm.get_keys(session_id, "CONTENT"):
      keys+=f"--key {key.kid.hex}:{key.key.hex()}\n"
    
    # close session, disposes of session data
    cdm.close(session_id)
    keys

    you read what i ask

    sure i know thad behind \n this will fix this problem bud than the keys its like

    --key blablabla:balaklallaka
    --key balaljalla:jallakajallal


    bud i need other way like

    --key blablabla:balaklallaka --key balaljalla:jallakajallal

    after i remove this /n will show me the right

    --key blablabla:balaklallaka --key balaljalla:jallakajallal

    bud than missing history

    ps : fixxed

    popup.js
    KEYS: result.split(" ").slice(0,-1)

    help me out
    Quote Quote  
  18. to have the keys on the same line.
    Code:
    # parse license challenge
    cdm.parse_license(session_id, licence)
    
    # get keys
    keys=""
    for key in cdm.get_keys(session_id, "CONTENT"):
      keys+=f"--key {key.kid.hex}:{key.key.hex()} "
    
    # close session, disposes of session data
    cdm.close(session_id)
    keys
    Image
    [Attachment 78678 - Click to enlarge]
    Quote Quote  
  19. Originally Posted by FoxRefire View Post
    another issue

    Image
    [Attachment 78679 - Click to enlarge]


    Originally Posted by FoxRefire View Post
    I don't intend to implement features related to downloading or decrypting content, such as obtaining mpd links, in the future.
    This is because I do not want to put myself at legal risk by my extension
    lol very funny! anyway ok, no problem
    Quote Quote  
  20. Member
    Join Date
    Aug 2023
    Location
    Turkey
    Search Comp PM
    Originally Posted by sesamap159 View Post
    to have the keys on the same line.
    Code:
    # parse license challenge
    cdm.parse_license(session_id, licence)
    
    # get keys
    keys=""
    for key in cdm.get_keys(session_id, "CONTENT"):
      keys+=f"--key {key.kid.hex}:{key.key.hex()} "
    
    # close session, disposes of session data
    cdm.close(session_id)
    keys
    Image
    [Attachment 78678 - Click to enlarge]
    ohh my good

    sure bud now you lose the history lol

    read my last edit i have it done fixed
    Quote Quote  
  21. [Opinions wanted]
    I'm planning to implement a feature in the extension to block requests to the license server temporarily.
    License servers such as VdoCipher need to send a one-time token in the request payload, and once the token is consumed, it becomes unusable.
    This feature is intended to work around that problem.
    I'm currently considering adding an item like “Block acquisition and reload” to the right-click menu on the web page, which would block requests to the license server at the time of reloading.
    Let me know if you have an opinion on a better way.
    Don't be stupid.Use your brain and Google.
    Read the rules and documentation before asking for support about my extension.
    Quote Quote  
  22. when i add to firefox which file i choose from directory and thee extention works well on chrome on many sites except “ shahid.net”
    Quote Quote  
  23. Good morning,
    I would like to know is it possible to retrieve the .mpd link of the video?

    Image
    [Attachment 78681 - Click to enlarge]
    Quote Quote  
  24. Member
    Join Date
    Aug 2023
    Location
    Turkey
    Search Comp PM
    Originally Posted by FoxRefire View Post
    [Opinions wanted]
    I'm planning to implement a feature in the extension to block requests to the license server temporarily.
    License servers such as VdoCipher need to send a one-time token in the request payload, and once the token is consumed, it becomes unusable.
    This feature is intended to work around that problem.
    I'm currently considering adding an item like “Block acquisition and reload” to the right-click menu on the web page, which would block requests to the license server at the time of reloading.
    Let me know if you have an opinion on a better way.
    oooh yeah thad very good idea
    Quote Quote  
  25. @FoxRefire
    [Opinions wanted]
    Sure, why not


    @sesamap159
    I would like to know is it possible to retrieve the .mpd link of the video?
    Who is that geared towards, as Foxrefire has no intensions of adding it?


    With respect to having the keys listed as per N_m3u8DL-RE --key format


    11111
    Edit in python/after.py file.
    # parse license challenge
    cdm.parse_license(session_id, licence)


    # get keys
    keys=""
    for key in cdm.get_keys(session_id, "CONTENT"):
    keys+=f"--key {key.kid.hex}:{key.key.hex()} "


    # close session, disposes of session data
    cdm.close(session_id)
    keys


    and

    22222
    popup.js


    From : KEYS: result.split("\n").slice(0,-1)
    To : KEYS: result
    Quote Quote  
  26. Also, it's a good idea to edit the manifest.json and change the version number, say something like (daymonthyear)


    "version": "1.28042024",
    Quote Quote  
  27. [Announcement]

    You can now request additional custom license schemes even if you cannot write the code.
    https://gist.github.com/FoxRefire/fd606ec29a9bfa1f1bef897e0dc3a231
    Follow this guide.

    Attention:
    Requests are not guaranteed to be added.
    I will decide whether or not to add a scheme based on the information I receive, based on technical ease and my mood.
    If I request it, you must be willing to confirm if the my code works on requested website.
    I do not want to go through the trouble of finding a VPN and registering an account to check the operation on my end.
    Don't be stupid.Use your brain and Google.
    Read the rules and documentation before asking for support about my extension.
    Quote Quote  
  28. Good evening,
    I would like to display the mpd link in the console log but I can't get the .mpd link?

    here is the code:
    Code:
    chrome.webRequest.onBeforeRequest.addListener(
     function(details) {
    	if (details.method === "GET") {
    		if ((url.startsWith("https") && (url.contains(".mpd")))){
    			chrome.tabs.query({ active: true, currentWindow: true }, function(tabs) {
    				chrome.tabs.sendMessage(tabs[0].id, { action: "MpdUrl", mpd_url: url }, function(response) {console.log(response)});
    			});
            }
    	}
     }, 
     {urls: ["<all_urls>"]},
     ["requestMDP"]
    );
    Quote Quote  
  29. Originally Posted by sesamap159 View Post
    Good evening,
    I would like to display the mpd link in the console log but I can't get the .mpd link?

    here is the code:
    Code:
    chrome.webRequest.onBeforeRequest.addListener(
     function(details) {
    	if (details.method === "GET") {
    		if ((url.startsWith("https") && (url.contains(".mpd")))){
    			chrome.tabs.query({ active: true, currentWindow: true }, function(tabs) {
    				chrome.tabs.sendMessage(tabs[0].id, { action: "MpdUrl", mpd_url: url }, function(response) {console.log(response)});
    			});
            }
    	}
     }, 
     {urls: ["<all_urls>"]},
     ["requestMDP"]
    );
    Depends what site you're on - it's not necessarily the case that all sites load .mpd files as a single file over a network request - some make it more difficult.
    Quote Quote  
  30. help please i want to add the extention to firefox permanently
    Quote Quote  



Similar Threads

Visit our sponsor! Try DVDFab and backup Blu-rays!